﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Collections;
using Tibet.Entidades;
using NUnit.Framework;
using Tibet.Logica.FabricaLogica;
using Tibet.Logica.Comandos.ComandoAdministracionLogin;
using Tibet.Logica.Comandos;

namespace Tibet
{
    [TestFixture]
    public class PruebasUsuario
    {
        /// <summary>
        /// Valida el ingreso de un usuario
        /// </summary>
        [TestCase]
        public void PruebaIngresarUsuario()
        {
            string primerNombre = "Alfredo";
            string segundoNombre = "Andres";
            string primerApellido = "Rondon";
            string segundoApellido = "Manyari";
            string email = "edgiovinale@gmail.com";
            string clave = "12345";
            int estatus = 1;
            string nombreRol = "Desarrollador";

            Rol rol = new Rol(nombreRol);
            Credencial credencial = new Credencial(primerNombre,clave,estatus);
            Usuario usuario = new Usuario(primerNombre,segundoNombre, primerApellido,segundoApellido, email,estatus,credencial,rol);

            //consulta a la base de datos

            Comando comando = FabricaComandoUsuario.CrearComandoCrearUsuario(usuario);
            comando.Ejecutar();

            //Si se ingreso el usuario

            Assert.AreEqual(comando.Flag, true);
        }

        /// <summary>
        /// Valida que el usuario fue modificado
        /// </summary>
        [TestCase]
        public void PruebaModificar()
        {

            string primerNombre = "Alfredo";
            string segundoNombre = "Carlos";
            string primerApellido = "Rondon";
            string segundoApellido = "Manyari";
            string email = "edgiovinale@gmail.com";
            string clave = "12345";
            int estatus = 1;
            string nombreRol = "Desarrollador";

            Rol rol = new Rol(nombreRol);
            Credencial credencial = new Credencial(primerNombre, clave, estatus);
            Usuario usuario = new Usuario(primerNombre, segundoNombre, primerApellido, segundoApellido, email, estatus, credencial, rol);

            //se busca en la base de datos
            Comando comando = FabricaComandoUsuario.CrearComandoModificarUsuario(usuario);
            comando.Ejecutar();

            //si se modifico el usuario
            Assert.AreEqual(comando.Flag, true);

        
        }
        /// <summary>
        /// Valida que el usuario se elimino efectivamente de la base de datos
        /// </summary>
        [TestCase]
        public void PruebaEliminar()
        {
            string primerNombre = "Alfredo";
            string segundoNombre = "Carlos";
            string primerApellido = "Rondon";
            string segundoApellido = "Manyari";
            string email = "edgiovinale@gmail.com";
            string clave = "12345";
            int estatus = 1;
            string nombreRol = "Desarrollador";

            Rol rol = new Rol(nombreRol);
            Credencial credencial = new Credencial(primerNombre, clave, estatus);
            Usuario usuario = new Usuario(primerNombre, segundoNombre, primerApellido, segundoApellido, email, estatus, credencial, rol);

            //opera con la base de datos
            Comando comando = FabricaComandoUsuario.CrearComandoEliminarUsuario(usuario);
            comando.Ejecutar();
            //si se elimino de la base de datos
            Assert.AreEqual(comando.Flag, true);
          
        }

        /// <summary>
        /// Validad que el usuario se encuentre en la base de datos
        /// </summary>
        [TestCase]
        public void PruebaExisteUsuario()
        {
            string primerNombre = "Alfredo";
            string segundoNombre = "Carlos";
            string primerApellido = "Rondon";
            string segundoApellido = "Manyari";
            string email = "edgiovinale@gmail.com";
            string clave = "12345";
            int estatus = 1;
            string nombreRol = "Desarrollador";

            Rol rol = new Rol(nombreRol);
            Credencial credencial = new Credencial(primerNombre, clave, estatus);
            Usuario usuario = new Usuario(primerNombre, segundoNombre, primerApellido, segundoApellido, email, estatus, credencial, rol);

            //consulta con la base de datos
            Comando comando = FabricaComandoUsuario.CrearComandoValidarUsuario(usuario);
            comando.Ejecutar();

            // si consiguio el usuario
            Assert.AreEqual(comando.Flag, true);
        
        }


    }
}
